#pragma once
#include "yzrutil.h"

namespace yzrilyzr_util{
	/*
	format:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
	*/
	class U_EXPORT_API UUID{
		public:
		uint64_t msb;
		uint64_t lsb;
		constexpr UUID() :msb(0), lsb(0){}
		constexpr UUID(uint64_t msb, uint64_t lsb):msb(msb), lsb(lsb){}
		UUID(const yzrilyzr_array::ByteArray &array);
		yzrilyzr_lang::String toString()const;
		static UUID fromString(const yzrilyzr_lang::String & str);
		bool operator==(UUID & v)const;
		int32_t hashCode()const;
	};

	typedef UUID FAQID;

	EBCLASS(UUIDs){
		public:
		static constexpr UUID NULL_UUID{0, 0};
	};
}